/**
 * @details: 
 * @brief: 
 * @version: 1.0
 * @author: liuri
 * @Date: 2021-10-05 03:38:32
 * @LastEditors: liuri
 * @LastEditTime: 2021-10-05 04:36:19
 * @FilePath: /TestProject/cPath/vtysh/vector.h
 * @Copyright (C) 2021 liuri. All rights reserved.
 */

#ifndef __VECTOR_H__
#define __VECTOR_H__


struct _vector 
{
	unsigned int max;			/* 使用的数据大小 */
	unsigned int alloced;		/* index 分配的大小 */
	void **index;				/* 数据数组 */
};
typedef struct _vector *vector;


#define VECTOR_MIN_SIZE 	1
#define vector_slot(V,I)  	((V)->index[(I)])
#define vector_max(V) 		((V)->max)

// 初始化
vector vector_init(unsigned int size);


// 检查vectory 大小，小于num重新分配
void vector_ensure(vector v, unsigned int num);

// 获取 index 中的空位
int vector_empty_slot(vector v);

// 插入指定未知
int vector_set_index (vector v, unsigned int i, void *val);

// 将val插入到空位中
int vector_set(vector v, void *val);

// 释放vector
void vector_free(vector v);

// vector_copy 赋值
vector vector_copy(vector v);

// 释放 vector, 不释放index
void vector_wrapper_free(vector v);

// 释放 index, 不释放 vector
void vector_index_free(void *index);


#endif
